/**
 * 注意：拦截uni.switchTab本身没有问题。但是在微信小程序端点击tabbar的底层逻辑并不是触发uni.switchTab。所以误认为拦截无效，此类场景的解决方案是在tabbar页面的页面生命周期onShow中处理。
 */
//拦截器 拦截只要是未登录状态，想要跳转到名单内的路径时，直接跳到登录页。

import { useUserStore } from '@/stores'
const isLogined = () => {
    const userStore = useUserStore()
    return userStore.isLogin || false
}

// 页面名单 不需要登录的页面
const checkList = ['/pages/login/login']
const navigateToInterceptor = {
    invoke({ url }: { url: string }) {
        // 在白名单中或有登录判断条件可以直接跳转
        if (url.indexOf('?') !== -1) {
            url = url.substring(0, url.indexOf('?'))
        }
        if (checkList.indexOf(url) !== -1) {
            return true
        }
        //需要登录
        const hasLogin = isLogined()
        if (hasLogin) {
            return true
        }
        uni.reLaunch({
            url: '/pages/index/login',
        })
        return false
    },
}
uni.addInterceptor('navigateTo', navigateToInterceptor)
uni.addInterceptor('reLaunch', navigateToInterceptor)
uni.addInterceptor('redirectTo', navigateToInterceptor)
uni.addInterceptor('switchTab', navigateToInterceptor)
